#ifndef __SPI_DRIVER_H__
#define __SPI_DRIVER_H__

#include <linux/module.h>
#include <linux/cdev.h>
#include <linux/device.h>
#include <linux/regmap.h>

struct spi_dev_node{
    dev_t devid; /* 设备号 */
    struct cdev cdev; /* cdev */
    struct class *class; /* 类 */
    struct device *device; /* 设备 */
    int major; /* 主设备号 */
    int minor; /* 次设备号 */
    int cs_gpio; /* 片选所使用的 GPIO编号*/
    int dc_gpio; /* 密令/数据所使用的 GPIO编号*/
    int reset_gpio; /* reset所使用的 GPIO编号*/
    struct device_node *node;     /*设备节点*/
    unsigned int state; /*oled 开关状态*/
    void *private_data;

    struct regmap *regmap;
    struct regmap_config regmap_config;
};

#define LCD_COMMAND     0
#define LCD_DATA        1

int spi_read_reg(struct spi_dev_node *dev, u8 reg);
void spi_write_reg(struct spi_dev_node *dev, u8 reg, u8 data);
int spi_writeCommand(struct spi_dev_node *dev, u8 cmd);
int spi_writeData(struct spi_dev_node *dev, u8 *buf, u8 len);

#endif // __SPI_DRIVER_H__

